package br.com.sgc.session;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import br.com.sgc.dao.PessoaFisicaDao;
import br.com.sgc.entities.geral.Pessoa;
import br.com.sgc.entities.geral.PessoaFisica;
import br.com.sgc.exception.ValidacaoException;
import br.com.sgc.helper.ValidadorCNPJCPFUtil;

@Stateless
public class PessoaFisicaSession extends GenericSession<PessoaFisica> {

	private static final long serialVersionUID = -7030878575204519929L;
	
	@EJB
	private PessoaFisicaDao dao;
	
	public PessoaFisica findByCPF(String documento, Long idClinica){
		Pessoa pessoaDB = null;
		pessoaDB = dao.checkDocumentoPF(documento, idClinica);
		if(pessoaDB == null){
			pessoaDB = new PessoaFisica();
			((PessoaFisica)pessoaDB).setCpf(documento);
		}
		return (PessoaFisica) pessoaDB;
	}
	
	public void validarCPF(String cpf) throws ValidacaoException {
		String erro = "";
		if (cpf == null || cpf.trim().equals("")) {
			erro +="Campo CPF precisa ser preenchido! <br />";
		} else if (!ValidadorCNPJCPFUtil.isCPFValido(cpf)) {
			erro +="O CPF informado é inválido! <br />";
		}
		if (erro != "") {
			throw new ValidacaoException(erro);
		}
	}
	
	
	
	@Override
	public void validar(PessoaFisica t) throws ValidacaoException {
		String erro = "";
		if (t.getCpf() == null || t.getCpf().trim().equals("")) {
			erro +="Campo CPF precisa ser preenchido! <br />";
		} else if (!ValidadorCNPJCPFUtil.isCPFValido(t.getCpf())) {
			erro +="O CPF informado é inválido! <br />";
		} else {
			PessoaFisica pessoa = (PessoaFisica) findByCPF(t.getCpf(), t.getClinica().getId());
			if (pessoa.getId() != null && (t.getId() == null || t.getId() != null && t.getId() != pessoa.getId())) {
				erro +="Já existe uma pessoa cadastrada com esse CPF! <br />";
			}
		}
		if(t.getNome().isEmpty()){
			erro +="Campo Nome precisa ser Preenchido! <br />";
		}
		if(t.getDataNascimento() == null){
			erro +="Campo Data de Nascimento precisa ser Preenchido! <br />";
		}
		if(t.getEnderecos().isEmpty()){
			erro +="É necessário que exista pelo menos um Endereço adicionado! <br />";
		}
		if(t.getRg().isEmpty()){
			erro +="Campo RG precisa ser Preenchido! <br />";
		}
		if(t.getSexo() == null){
			erro +="Campo Sexo precisa ser Selecionado! <br />";
		}
		if(t.getTelefones().isEmpty()){
			erro +="É necessario que exista pelo menos um Telefone adicionado! <br />";
		}
		
		if(!erro.isEmpty()){
			throw new ValidacaoException(erro);
		}
	}
	
}
